#ifndef CONTROLLER_H
#define CONTROLLER_H

#include <QMap>
#include <QtGlobal>

#define FC_KEY_A 0
#define FC_KEY_B 1
#define FC_KEY_SELECT 2
#define FC_KEY_START 3
#define FC_KEY_UP 4
#define FC_KEY_DOWN 5
#define FC_KEY_LEFT 6
#define FC_KEY_RIGHT 7

class Controller
{
private:
    // 寄存器
    bool strobe;      // 是否处于选通状态
    quint8 keystate;  // 键位状态
public:
    // 供CPU调用的接口
    void write_strobe(quint8 data);
    quint8 output_key_states();

public:
    void init();
    void get_key_states(); // 根据当前真实的按键情况，获取FC手柄中缓存的按键情况
    QMap<int, quint8> key_map;  // 键位映射表
    bool cur_keystate[8];       // 当前真实的按键状态
};

#endif
